package dancereal;

public class J20_Package {

	public static void main(String[] args) {

		/*
		 * 패키지 Package 
		 * 자바에서는 패키지를 이용해 관련 클래스나
		 * 유사한 기능을 가진 클래스들로 그룹화 할 수 있음
		 * 자바 핵심 클래스는 java.lang 패키지에 있음
		 * 자바 프로그램 작성에 도움을 주는 
		 * 유틸리티 클래스들은 java.util 패키지에 있음
		 * 
		 * java 로 시작하는 패키지 이름은 
		 * 핵심 라이브러리를 위해 예약됨 
		 * javax 로 시작하는 패키지는 java 라는 핵심
		 * 라이브러리를 확장한 라이브러리라는 의미임 
		 * 따라서, 일반 개반자는 java 나
		 * javax로 시작하는 패키지는 만들 수 없음(실행 불가)
		 * 
		 * 클래스를 조직화 하고 패키징 함으로써 '이름 충돌'을 피할 수 있음
		 * 즉, 클래스 이름이 동일하더라도 패키지만 다르면 얼마든지 허용됨 
		 * 단, 이러한 목적을 위해 패키지 표기법은 역방향 도메인 이름에 기초함
		 * 
		 * 예를 들어, java 공식홈페이지 주소는 java.sun.com
		 * 이것을 패키지 이름으로 작성한다면 com.sun.java로 씀 
		 * 일반적으로 패키지는 단체종류, 회사명, 기타 등등 순으로 작성하는 것이 관례임
		 * org.iedu.javaled17.아이디.프로젝트명.클래스명
		 * 
		 * 패키지는 물리적 개체가 아님 - 만드는데 돈 안듦
		 * 따라서, 하나만 만들 필요 없음패키지를 통해 클래스를 그룹화 하려면
		 * package 라는 예약어 사용해야 함 클래스의 패키지화는 클래스의 가시성에 영향을 줌
		 * 
		 * 패키지는 물리적인 객체가 아니지만패키지 이름은 소스파일의 물리적인 위치와관련 있음
		 * 따라서, a.b.c 라는 패키지를 가진 클래스 D는
		 * a/b/c 디렉토리 아래에 D라는 소스파일이존재한다는 것을 의미
		 *
		 * 한편, 패키지 선언이 없는 클래스는
		 * 기본 패키지에 속해 있다고 말함
		 * 기본 패키지에 속한 클래스들은
		 * 기본 패키지 밖에서는 볼 수 없음
		 * 
		 * 
		 */

	}

}
